package com.hliushi.chain.example01_right;

/**
 * 审批人
 *
 * @author: hliushi
 * @date: 2023/2/16 22:08
 **/
public abstract class Approver {

    /**
     * 抽象出审批人的名字
     */
    protected String name;

    /**
     * 下一位审批人，更高级别领导
     */
    protected Approver nextApprover;

    public Approver(String name) {
        this.name = name;
    }

    /**
     * @param nextApprover 下一位审批人
     * @return 返回下一位审批人，使其支持链式编程
     */
    public Approver setNextApprover(Approver nextApprover) {
        this.nextApprover = nextApprover;
        return this.nextApprover;
    }

    /**
     * 抽象审批方法由具体的审批人子类实现
     *
     * @param amount
     */
    public abstract void approve(int amount);
}
